   

                   ▄████████▄                     
                 ▄█▀▒▒▒▒▒▒▒▀██▄
               ▄█▀▒▒▒▒▒▒▒▒▒▒▒██
             ▄█▀▒▒▒▒▒▒▄▒▒▒▒▒▒▐█▌
            ▄█▒▒▒▒▒▒▒▒▀█▒▒▒▒▒▐█▌
           ▄█▒▒▒▒▒▒▒▒▒▒▀█▒▒▒▄██
          ▄█▒▒▒▒▒▒▒▒▒▒▒▒▀█▒▄█▀█▄
         ▄█▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▀▒▒▒█▄
        ▄█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█▄
       ▄█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█▄  
      ▄█▒▒▒▄██████▄▒▒▒▒▄█████▄▒▒▒▒█
      █▒▒▒█▀░░░░░▀█ ▒▒▒█▀░░░░▀█▒▒▒█              @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
      █▒▒▒█░░▄░░░░▀████▀░░░▄░░█▒▒▒█              >             	                             <
    ▄███▄▒█▄░▐▀▄░░░░░░░░░▄▀▌░▄█▒▒███▄            >             	                             <
    █▀░░█▄▒█░▐▐▀▀▄▄▄ ▄▄▄▀▀▌▌░█▒▒█░░▀█            >             	                             <
    █░░░░█▒█░▐▐  ▄▄ █ ▄▄  ▌▌░█▒█░░░░█            >          Cómo editar la pantalla          <
    █░▄░░█▒█░▐▐▄ ▀▀ █ ▀▀ ▄▌▌░█▒█░░▄░█	         >          -----------------------          <
    █░░█░█▒█░░▌▄█▄▄▀ ▀▄▄█▄▐░░█▒█░█░░█            >          de título de Donkey Kong         <
    █▄░█████████▀░░▀▄▀░░▀█████████░▄█            >          ------------------------         <
     ██▀░░▄▀░░▀░░▀▄░░░▄▀░░▀░░▀▄░░▀██             >                                           <
    ██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██            >           Autor: Crying Onion             <
    █░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█            >                Versión 1.0                <
    █░▄░░░░░░░░░░░░░░░░░░░░░░░░░░░▄░█            >             Fecha: 10/11/2020             <
    █░▀█▄░░░░░░░░░░░░░░░░░░░░░░░▄█▀░█            >             	                             <
    █░░█▀███████████████████████▀█░░█            >             	                             <
    █░░█    █   █   █   █   █    █░░█            >                                           <
    █░░▀█   █   █   █   █   █   █▀░░█            @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    █░░░▀█▄▄█▄▄▄█▄▄▄█▄▄▄█▄▄▄█▄▄█▀░░░█
    ▀█░░░█  █   █   █   █   █  █░░░█▀
     ▀█░░▀█▄█   █   █   █   █▄█▀░░█▀
      ▀█░░░▀▀█▄▄█   █   █▄▄█▀▀░░░█▀
       ▀█░░░░░▀▀█████████▀▀░░░░░█▀
        ▀█░░░░░▄░░░░░░░░░▄░░░░░█▀
         ▀██▄░░░▀▀▀▀▀▀▀▀▀░░░▄██▀
            ▀██▄▄░░░░░░░▄▄██▀
               ▀▀███████▀▀



	1) Introducción

	2) Por donde empezar y los diferentes bytes/valores a editar

	3) Un pequeño ejemplo

______________________________________________________________________________________________


	1) Introducción

¡Buenas notícias! Aprender a editar la pantalla de titulo de un juego de NES es fácil, y es un
proceso que comparten el 90% de los juegos.

Ahora las malas notícias: Donkey Kong pertenece al otro 10% que usa su propio sistema XD.
Apostaría a que muchos juegos de lanzamiento de Nintendo para esta consola usan este peculiar
sistema, pero éste es el primer ejemplo que me he encontrado.

Como no encontré tutoriales previos (solo algo de información útil en viejos posts del foro),
he decidido compartir con vosotros lo que he aprendido.

______________________________________________________________________________________________


	2) Por donde empezar y los diferentes bytes/valores a editar


El código de la pantalla de título empieza en la dirección 003905, con grupos de 4 bytes para
cada tile mostrada. Partiendo de los primeros 4 bytes, 20, 83, C5 y 62, ahora explicaré qué
función hace cada uno y sus variables:

	·1er byte: La pantalla se divide en dos cuadrantes. El valor '20' equivale al cuadrante
	 superior, y el '21' al cuadrante inferior.

	·2o byte: La posición de la tile en la pantalla. Siguiendo con el ejemplo del 1er grupo
	 de bytes sería el '83'. Si lo cambiamos a '82' moveremos la tile al espacio previo.

Nota 1 Si quisiéramos subir o bajar una tile, tendríamos que cambiar el valor hasta que ésta
llegara al borde de la pantalla. Ejemplo: Si con 'F8' la tile llegara al borde derecho de la
pantalla, con 'F9' aparecería en el borde izquierdo de la siguiente fila vertical.

Nota 2 Para hacer eso, es importante saber que los valores (del más bajo al más alto) van del 0
al 9, y después de la A a la F. Ejemplo: El siguiente valor a 0F sería 10, y el siguiente a 19
sería 1A.

	·3er byte: Este valor indica cómo debe mostrarse la tile en pantalla. Hay 3 variables:

		01: Imprime una sola tile en pantalla.

		C5: C es un comando que imprime uno o más tiles verticales consecutivas. El nº que
		le sigue indica cuantas veces debe imprimirse (C5 imprimiría 5 tiles verticales).

		42: Lo mismo que C, pero horizontalmente. El nº que le sigue indica cuantas veces
		debe imprimirse (42 imprime 2 tiles horizontalmente).

	·4o byte: Este valor indica "qué" tile debe imprimirse en pantalla.'62' es el valor de la
	 tile que usa comúnmente la pantalla de título de Donkey Kong.'24' imprimiría una tile en
	 negro/vacía.

Nota 3 De echo, podéis usar cualquiera de la tiles cargadas en la memoria PPU. Para saber qué
valor hexadecimal tiene una tile, usaremos el Visor PPU (integrado en emuladores como FCEUX).
Desde la ventana del visor vemos las paletas de colores o tiles que el juego está usando en ese
preciso momento. Si pasamos el puntero del ratón por encima de la tile que nos interesa, en la
parte inferior de la ventana veremos el valor de ésta.

_________________________________________________________________________________________________


	3) Un pequeño ejemplo


Solo para practicar, aquí tenéis un ejemplo de cómo convertir la primera letra de 'Donkey' en una
'A'. Empezamos desde el primero grupo de 4 bytes de la pantalla de título (dirección 003905):

	·El primer grupo de 4 bytes imprimirá en el cuadrante superior (20), en la posición (83)
	 una fila vertical de 5 (C5) tiles (62).

	·El siguiente grupo de 4 bytes imprimirá en el cuadrante superior (20), en la posición (84)
	 una fila horizontal de 3 (43) tiles.

	·El siguiente grupo de 4 bytes imprimirá en el cuadrante superior (20), en la posición (85)
	 otra fila vertical de 5 (C5) tiles (62).

	·El último grupo de 4 bytes es el único que dará algo de trabajo, porque debemos mover la
	 tile hacia abajo. Podemos contar la cantidad exacta de espacios que deberemos moverlo para
	 calcular el valor que usaremos, aunque también podemos hacerlo mediante "ensayo y error",
	 cambiando exageradamente el valor para ver si nos alejamos/acercamos al sitio indicando e
	 ir corrigiendo. La única complicación es que si movemos la tile sobre otra dejaremos de
	 verla. Es cuestión de paciencia. Al final imprimimos en el cuadrante superior (20), en la
	 posición (C4) una única (01) tile (62).